﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using ProyectoGrupo5.Negocio;
using ProyectoGrupo5.ClasesDominio;

namespace ProyectoGrupo5.Controllers
{
    public class AvisoController : Controller
    {
        // Dependencias
        AvisoService AvisoService { get; set; }

        // Cada Método de ActionResult esta listo para procesar peticiones Web
        // Index(): Acción que se llama por defecto
        // View(): Desplega la vista con el nombre de la acción, despues de realizar la acción
        // GET: /Aviso/
        public ActionResult Index()
        {
            ICollection<Aviso> Model = AvisoService.ListarTodosLosAvisos();
            return View(Model);
        }

        // GET: /Aviso/Details/5
        public ActionResult Details(Int32 codigo)
        {
            Aviso Model = AvisoService.ObtenerAviso(codigo);
            return View(Model);
        }

        // GET: /Aviso/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: /Aviso/Create
        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                // TODO: Add insert logic here
                if (ModelState.IsValid)
                {
                    Aviso nuevoAviso = new Aviso();
                    nuevoAviso.Ofertante = new Ofertante();
                    nuevoAviso.CodigoAviso = Int32.Parse(collection["CodigoAviso"]);
                    nuevoAviso.DescripcionEmpresa = (String)collection["DescripcionEmpresa"];
                    nuevoAviso.DescripcionPuesto = (String)collection["DescripcionPuesto"];
                    nuevoAviso.Titulo = (String)collection["Titulo"];
                    nuevoAviso.FechaInicio = DateTime.Parse(collection["FechaInicio"]);
                    nuevoAviso.FechaFin = DateTime.Parse(collection["FechaFin"]);
                    nuevoAviso.Ofertante.CodigoOfertante = Int32.Parse(collection["Ofertante.CodigoOfertante"]);
                    AvisoService.CrearAviso(nuevoAviso);
                    return RedirectToAction("Index");
                }
                return View();
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, e.Message);
                return View();
            }
        }

        // GET: /Aviso/Edit/5
        public ActionResult Edit(Int32 codigo)
        {
            Aviso Model = AvisoService.ObtenerAviso(codigo);
            return View(Model);
        }

        // POST: /Aviso/Edit/5
        [HttpPost]
        public ActionResult Edit(Int32 codigo, FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Aviso avisoAModificar = AvisoService.ObtenerAviso(codigo);
                    //avisoAModificar.CodigoAviso = (String)collection["CodigoAviso"];
                    avisoAModificar.DescripcionEmpresa = (String)collection["DescripcionEmpresa"];
                    avisoAModificar.DescripcionPuesto = (String)collection["DescripcionPuesto"];
                    avisoAModificar.Titulo = (String)collection["Titulo"];
                    avisoAModificar.FechaInicio = DateTime.Parse(collection["FechaInicio"]);
                    avisoAModificar.FechaFin = DateTime.Parse(collection["FechaFin"]);
                    AvisoService.ModificarAviso(avisoAModificar);
                    return RedirectToAction("Index");
                }
                return View();
            }
            catch
            {
                return View();
            }
        }

        // GET: /Aviso/Delete/5
        public ActionResult Delete(Int32 codigo)
        {
            Aviso Model = AvisoService.ObtenerAviso(codigo);
            return View(Model);
        }

        // POST: /Aviso/Delete/5
        [HttpPost]
        public ActionResult Delete(Int32 codigo, FormCollection collection)
        {
            try
            {
                Aviso avisoAEliminar = AvisoService.ObtenerAviso(codigo);
                AvisoService.EliminarAviso(codigo);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

    }
}
